#include <iostream>
#include "httplib.h"  // 引入 httplib 库的头文件，用于 HTTP 请求处理
#include <vector>    // 引入 vector 容器，用于存储 multipart 文件条目

// 定义服务器地址和端口号
static const char* SERVER_IP = "114.55.52.91"; // 目标服务器的 IP 地址
static const uint16_t SERVER_PORT = 8121;     // 目标服务器对应的端口号

int main() {
    // 创建一个 HTTP 客户端，设置目标服务器的 IP 和端口
    httplib::Client client(SERVER_IP, SERVER_PORT);

    // 定义一个 MultipartFormData 对象，用于存储文件字段信息
    httplib::MultipartFormData item;
    // item.name = "file";             // 字段名称为 file，对应表单中的 key 值
    item.name = "filooo";            

    item.filename = "hello.txt";    // 设置文件名称为 hello.txt
    item.content = "Hello world";   // 设置文件内容为 Hello world
    item.content_type = "text/plain"; // 指定文件的 MIME 类型为纯文本类型 (text/plain)

    // 创建一个列表（容器），用于存放多个 MultipartFormData 对象
    httplib::MultipartFormDataItems items; // 此处的 vimplus 的语法报错都可以不用卵
                                           
    items.push_back(item);          // 将上述文件数据结构添加到列表中

    // 向服务器发送 POST 请求到路径 /multipart，并附加 multipart 文件数据
    auto res = client.Post("/multipart", items);
    
    // 打印服务器返回的 HTTP 状态码和响应内容
    if (res) {  // 检查请求是否成功 (res 是否为 nullptr)
        std::cout << "HTTP Status Code:  "<< res->status << std::endl;   // 输出状态码
        std::cout << "Response Body:  "<< res->body << std::endl;       // 输出响应主体
    } else {  // 如果请求失败
        std::cerr << "Error: Failed to connect to server! "<< std::endl;
    }

    return 0;
}

